// Copyright 2021 by 马万里. All rights reserved.
// 开发团队 ：   鸡中之霸
// 开发人员 ：   马万里
// 开发时间 ：   2021/3/5 11:31
// 文件名称 ：   dbinit.go
// 工程名称 ：   ebook
// 开发工具 ：   GoLand
//

package sysinit

import (
	_ "backend/models"
	"fmt"
	"github.com/beego/beego/v2/adapter/logs"
	"github.com/beego/beego/v2/client/orm"
	beego "github.com/beego/beego/v2/server/web"
	_ "github.com/go-sql-driver/mysql"
)

// dbInit: 初始化mysql数据库
func dbInit(aliases ...string) {
	// 如果是开发模式,则显示命令信息
	isDev := "dev" == beego.BConfig.RunMode
	if len(aliases) > 0 {
		for _, alias := range aliases {
			registerDatabase(alias)
			if alias == "w" || alias == "default" {
				// 自动建表
				err := orm.RunSyncdb("default", false, isDev)
				if err != nil {
					logs.Error(err)
				}
			}
		}
	} else {
		registerDatabase("w")
		// 自动建表
		err := orm.RunSyncdb("default", false, isDev)
		if err != nil {
			logs.Error(err)
		}
	}
	// 打印操作数据库的debug信息
	orm.Debug = isDev
}

func registerDatabase(alias string) {

	dbAlias := alias // default
	if "w" == alias || "default" == alias {
		dbAlias = "default"
		alias = "w"
	}
	// 主机
	host := beego.AppConfig.DefaultString("db_"+alias+"_host", "db_w_host")
	//端口
	port := beego.AppConfig.DefaultString("db_"+alias+"_port", "db_w_port")
	// 用户名
	username := beego.AppConfig.DefaultString("db_"+alias+"_username", "db_w_username")
	// 密码
	password := beego.AppConfig.DefaultString("db_"+alias+"_password", "db_w_password")
	// 数据库名称
	database := beego.AppConfig.DefaultString("db_"+alias+"_database", "db_w_database")
	// 注册数据库
	dataSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8", username, password, host, port, database)
	err := orm.RegisterDataBase(dbAlias, "mysql", dataSource)
	if err != nil {
		logs.Error(err)
	}

}
